package hd.util.load;


import hd.util.LruCache;

/**
 * Key缓存
 * <p/>
 * Created by Haidy on 14-8-31.
 */
public class Cache<T> {

    private LruCache<String, T> cache = new LruCache<>((int) (Runtime.getRuntime().maxMemory() / 1024 / 8));//保存图片

    /**
     * 添加一个T
     *
     * @param key key
     * @param t   object
     */
    public void add(String key, T t) {
        if (key != null && cache.get(key) == null) {
            cache.put(key, t);
        }
    }

    /**
     * 获取一个T
     *
     * @param key key
     * @return T object
     */
    public T get(String key) {
        if (key != null) {
            return cache.get(key);
        }
        return null;
    }

    /**
     * 是否包含key
     *
     * @param key key
     * @return 是否存在
     */
    public boolean contain(String key) {
        return get(key) != null;
    }

    /**
     * 移除一个T
     *
     * @param key key
     */
    public T remove(String key) {
        if (key != null && cache.get(key) != null) {
            return cache.remove(key);
        }
        return null;
    }

    /**
     * 清空所有
     */
    public void clear() {
        if (cache.size() > 0) {
            cache.evictAll();
        }
    }
}
